package iso3.pt.model;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Test {

	SessionFactory sessionFactory;

	public Test() {
		sessionFactory = new Configuration().configure().buildSessionFactory();
	}

	public void inserciones1() {

		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();

		Profesor pr1 = new Profesor(1111, "profe1", "Profesor 1", "1111111", "profesor1@deusto.com", "100");
		Profesor pr2 = new Profesor(1112, "profe2", "Profesor 2", "1111112", "profesor2@deusto.com", "200");
		Profesor pr3 = new Profesor(1113, "profe3", "Profesor 3", "1111113", "profesor3@deusto.com", "300");

		Unidad ud1 = new Unidad("ud1", "Unidad 1", "Contenido 1");
		Unidad ud2 = new Unidad("ud2", "Unidad 2", "Contenido 2");
		Unidad ud3 = new Unidad("ud3", "Unidad 3", "Contenido 3");

		Asignatura as1 = new Asignatura(01, "Asignatura 1", 5.5);
		Asignatura as2 = new Asignatura(02, "Asignatura 2", 6.5);
		Asignatura as3 = new Asignatura(03, "Asignatura 3", 7.5);

		Evaluacion ev1 = new Evaluacion("Evaluacion", 1);
		Evaluacion ev2 = new Evaluacion("Evaluacion", 2);
		Evaluacion ev3 = new Evaluacion("Evaluacion", 3);

		Alumno al1 = new Alumno(1111, "alum1", "Alumno 1", "1111");
		Alumno al2 = new Alumno(1112, "alum2", "Alumno 2", "1112");
		Alumno al3 = new Alumno(1113, "alum3", "Alumno 3", "1113");
		Alumno al4 = new Alumno(1114, "alum4", "Alumno 4", "1114");
		Alumno al5 = new Alumno(1115, "alum5", "Alumno 5", "1115");
		Alumno al6 = new Alumno(1116, "alum6", "Alumno 6", "1116");

		as1.setProfesor(pr1);
		as1.addAlumno(al1);
		as1.addUnidad(ud1);
		as1.addAlumno(al2);
		as1.addAlumno(al3);

		as2.setProfesor(pr2);
		as2.addAlumno(al4);
		as2.addUnidad(ud2);
		as2.addAlumno(al5);

		as3.setProfesor(pr3);
		as3.addAlumno(al6);
		as3.addUnidad(ud3);

		al1.addEvaluacion(ev1);
		al1.addAsignatura(as1);
		ev1.setAlumno(al1);
		ev1.setAsignatura(as1);

		al2.addEvaluacion(ev2);
		al2.addAsignatura(as2);
		ev2.setAlumno(al2);
		ev2.setAsignatura(as2);

		al3.addEvaluacion(ev3);
		al3.addAsignatura(as3);
		ev3.setAlumno(al3);
		ev3.setAsignatura(as3);

		session.save(pr1);
		session.save(pr2);
		session.save(pr3);

		session.save(as1);
		session.save(as2);
		session.save(as3);
		session.save(al1);
		session.save(al2);
		session.save(al3);
		session.save(al4);
		session.save(al5);
		session.save(al6);

		// Estos dos NO. Se hacen solos
		// session.save(ud1);
		// session.save(ev1);

		tx.commit();
		session.close();
		System.out.println("Inserciones hechas correctamente!");
	}

	public void busquedaPK() {

		Session session = sessionFactory.openSession();
		Transaction tx = session.beginTransaction();

		Profesor pr1 = (Profesor) session.get(Profesor.class, 111111224);
		System.out.println(pr1);
		pr1.setNombre("Juan");
		session.flush();

		tx.commit();
		session.close();
		System.out.println("Done busquedaPK!");
	}

	public void close() {
		sessionFactory.close();
	}

	public static void main(String[] args) {
		Test t1 = new Test();
		t1.inserciones1();
		t1.close();
	}
}